unsigned int __read_mostly nr_irqs;
integer_param("nr_irqs", nr_irqs);
+/* This default may be changed by the AMD IOMMU code */
bool_t __read_mostly opt_irq_perdev_vector_map = 0;
boolean_param("irq-perdev-vector-map", opt_irq_perdev_vector_map);
#include <asm/amd-iommu.h>
#include <asm/hvm/svm/amd-iommu-proto.h>
+extern bool_t __read_mostly opt_irq_perdev_vector_map;
+extern bool_t __read_mostly iommu_amd_perdev_vector_map;
+
struct amd_iommu *find_iommu_for_device(int bdf)
{
BUG_ON ( bdf >= ivrs_bdf_entries );
return -ENODEV;
}
+ /* Enable use of per-device vector map unless otherwise
+ * specified */
+ if ( iommu_amd_perdev_vector_map )
+ {
+ printk("AMD-Vi: Enabling per-device vector maps\n");
+ opt_irq_perdev_vector_map=1;
+ }
+ else
+ {
+ printk("AMD-Vi: WARNING - not enabling per-device vector maps\n");
+ }
+
return scan_pci_devices();
}
bool_t __read_mostly iommu_intremap = 1;
bool_t __read_mostly iommu_hap_pt_share;
bool_t __read_mostly iommu_debug;
+bool_t __read_mostly iommu_amd_perdev_vector_map = 1;
static void __init parse_iommu_param(char *s)
{
iommu_dom0_strict = 1;
else if ( !strcmp(s, "sharept") )
iommu_hap_pt_share = 1;
+ else if ( !strcmp(s, "no-perdev-vector-map") )
+ iommu_amd_perdev_vector_map = 0;
s = ss + 1;
} while ( ss );